The demand for increased computing power to implement newer electronic designs for a variety of applications such as computing, networking, communications, consumer electronics, and data encryption, to name a few, is continuous and crucial in today's modern computing world. In addition to processing speed, configuration flexibility is a key attribute that is desired in modern computing systems. Multiple core processor designs enable two or more cores to run simultaneously, and the combined throughput of the multiple cores can exceed the processing power of a single-core processor. The multiple core capacity allows electronic devices to increase in capability, in accordance with Moore's Law, without hitting the boundaries that would be encountered if attempting to implement similar processing power using a single core processor.
In some architectures, multiple cores can work together to perform a particular task. In this case, the cores communicate with each other, exchange data, and combine data to produce intermediate and/or final outputs. Each core can have a variety of registers to support program execution and storage of intermediate data. Additionally, registers such as stack pointers, return addresses, and exception data can also be present to enable execution of complex routines and support debugging of computer programs running on the multiple cores. Further, arithmetic units can provide mathematical functionality, such as addition, subtraction, multiplication, and division.
Reconfigurability is an important attribute in many processing applications. Reconfigurable devices have proven extremely efficient for certain types of processing tasks. The key to the cost and performance advantages of reconfigurable devices in certain roles is that conventional processors are often limited by instruction bandwidth and execution restrictions. Reconfigurable logic enables program parallelism, allowing for multiple simultaneous computation operations for the same program. Often, the high-density properties of reconfigurable devices come at the expense of the high-diversity property that is inherent in microprocessors. Microprocessors have evolved to a highly optimized configuration that can provide cost/performance advantages over reconfigurable arrays for certain tasks with high functional diversity. However, there are many tasks for which a conventional microprocessor may not be the best design choice. Other conventional computing techniques involve the use of application specific integrated circuits (ASICs), circuits designed from the ground up with a specific application or implementation in mind, to achieve high performance at the cost of extremely inflexible hardware design.
The emergence of reconfigurable computing has created a capability for flexibility and performance of computer systems. Reconfigurable computing combines the high speed of application specific integrated circuits with the flexibility of programmable processors. Reconfigurable processors have further increased the possibility for improvements in processing power and system redundancy. Multiple core reconfigurable processors are continuing to play an important role in the development of new systems, in many disciplines.